来源《XSS跨站脚本攻击剖析与防御》&《WEB前端技术揭秘》
一、一般测试方法步骤:0.总则:见框就插1.在输入框随便输入一些简单的字符,如 aaa,方便后续查找输出位置2.按下F12打开开发者模式,ctrl+F键,搜索 aaa3.多数情况下是在标签的value="aaa"中,或者独立出来包含在一些别的标签中,如div、span等4.根据特定情况构造payload,一般是直接构造标签或者闭合标签再构造或者利用伪协议等
二、常用技巧1.JS伪协议利用形式:javascript:[代码]示例:,引号可以去掉支持伪协议的属性有:href,lowsrc,bgsound,background,action,dynsrc
2.基于黑名单的过滤① js代码 中,利用空格,回车,tab键,切记只有""包裹的js代码才可以随便利用空格、回车、tab键,例如src="javascript:xxxx",而这样不行:src=javascript:xxxx,而且回车、换行不支持在on事件中使用,空格可以
js引擎特性:js语句通常以分号结尾,但是如果引擎判断一条语句完整的话,且结尾有换行符,就可以省略分号
例:
var a = 1var b = 2;//上述语句正确示例:,中间为tab键
用于绕过某些XSS防护也可以对TAB编码利用换行符拆解利用回车拆解② 大小写混淆
示例:
③ 编码绕过
暂无
④ 奇技巧
1.过滤引号策略:双引号不行单引号;单引号不行不要引号;不要引号不行试试反引号 `(IE支持)
2.过滤空格策略:/**/,注释符号绕过;/符号绕过;例:
3.属性关键词被过滤策略:插入/**/、\、\0示例:
//1.`/**/`//2.`\`、`\0`只能在css样式\js中使用,两者会被浏览器忽略@\0im\port'\0ja\vasc\ript:alert(1)';//此处用到了@import,详细@import解释在后面4.``注释绕过`